// All configuration item explanations can be find in https://cli.vuejs.org/config/
const path = require('path')
const resolve = path.resolve
module.exports = {
  publicPath: '/', // 默认为 '/'
  outputDir: 'dist', // 打包生成的生产环境构建文件的目录
  // assetsDir: '', // 放置生成的静态资源路径，默认在outputDir
  // indexPath: 'index.html', // 指定生成的 index.html 输入路径，默认outputDir
  // pages: undefined, // 构建多页
  // productionSourceMap: false, // 开启 生产环境的 source map?
  chainWebpack: config => {
    // config.entry('polyfill').add('@babel/polyfill')
    config.resolve.alias.set('@', resolve('src'))
    // 发布模式
    config.when(process.env.NODE_ENV === 'production', config => {
      config
        .entry('app')
        .clear()
        .add('./src/main-prod.js')
      
       // externals项目优化策略  加载外部cdn资源  排除某些包
      config.set('externals', {
        vue: 'Vue',
        'vue-router': 'VueRouter',
        axios: 'axios',
        lodash: '_',
        echarts: 'echarts',
        nprogress: 'NProgress',
        'vue-quill-editor': 'VueQuillEditor'
      })
      config.plugin('html').tap(args => {
        args[0].isProd = false
        return args
      })
    })
    // 开发模式
    config.when(process.env.NODE_ENV === 'development', config => {
      config
        .entry('app')
        .clear()
        .add('./src/main-dev.js')
    })
    config.plugin('html').tap(args => {
      args[0].isProd = false
      return args
    })
    // const svg = config.module.rule('svg')
    // svg.uses.clear()
    // svg.use('svg-sprite-loader').loader('svg-sprite-loader').options({ symbolId: 'icon-[name]' })
    // config.performance.set('maxEntrypointSize', 1024 * 1024)
    // config.performance.set('maxAssetSize', 1024 * 1024 * 2)
    // config.performance.set('assetFilter', name => name.endsWith('.js'))
  },
  css: {
    // 是否使用css分离插件 ExtractTextPlugin
    extract: true,
    // 开启 CSS source maps?
    sourceMap: false,
    // css预设器配置项
    loaderOptions: {},
    // 启用 CSS modules for all css / pre-processor files.
    modules: false
  },
  // 配置代理
  devServer: {
    proxy: {
      '/': {     //这里最好有一个 /
        target: 'http://127.0.0.1:4444',  // 后台接口域名
        ws: true,        //如果要代理 websockets，配置这个参数
        secure: false,  // 如果是https接口，需要配置这个参数
        changeOrigin: true,  //是否跨域
        pathRewrite: {
          '^/': ''
        }
      }
    }
  },
  lintOnSave: false
}
